Miniscript Template: 1
  Title: 3 Key Time Layered Multisig
  Created: 2023-09-11

Name of Template

3 Key Degrading Multisig

Goal to be achieved by template

The 2-of-3 multisig serves as a standard in multisignature solutions, offering a well-balanced combination of redundancy, security, flexibility, and practicality for securing Bitcoin. Loss of a single key does not spell disaster, and key distribution enhances security. Miniscript\'s time feature enables further disaster recovery. If two keys are lost, a timelock can convert the wallet to a 1-of-3 multisig. The proposal outlines four conditions through Miniscript\'s `thresh()`:

1. Key 1
2. Key 2
3. Key 3
4. Timelock (either relative or absolute)

Initially, the wallet requires 2-of-3 keys, functioning as a traditional 2-of-3 multisig. After the timelock expires, only one key is needed to spend the funds.

Timelock Values Note

- Descriptor template security is independent of relative or absolute timelock values; the impact is on timelock duration only. Reference transactions on testnet use short-duration timelocks; however, practical applications will vary. - Relative timelock descriptors provide a persistent structure, requiring a self-send to extend timelock security, thus enabling standardized timelock durations. - Absolute timelock descriptors need frequent updates; setting long-term timelock values becomes cumbersome. Updating these descriptors entails transferring coins to a new descriptor with revised absolute timelock values.

Suggested Relative Block Height Timelocks: older(32800) - Mid-point block height relative timelock (~278 days assuming constant hashrate) older(65535) - Max duration block height relative timelock (~455 days assuming constant hashrate)

Suggested Relative Epoch Timelocks: older(4224679) - Mid-point epoch time relative timelock (~180 days, 6 months) older(4259839) - Max duration epoch time relative timelock (~388 days)

Below is a reference diagram on how the 3 Key Time Layered Multisig operates across time:

Example Miniscript Output Descriptors

1. 3 Key Time Lock Multisig - Relative Blockheight Timelock

   wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(100)))

Reference Testnet Transaction

2. 3 Key Time Lock Multisig - Absolute Blockheight Timelock

   wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:after(2477600)))

Reference Testnet Transaction

3. 3 Key Time Lock Multisig - Absolute Epochtime Timelock

   wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:after(1694563200)))

Reference Testnet Transaction

4. 3 Key Time Lock Multisig - Relative Epochtime Timelock

   wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(4194400)))

Reference Testnet Transaction

(Future Addition: Taproot-based keyset for Minitapscript once integrated into Core)